home *** CD-ROM | disk | FTP | other *** search
- *
- * Script to plot a colorbar
- *
- * The script will assume a colorbar is wanted even if there is
- * not room -- it will plot on the side or the bottom if there is
- * room in either place, otherwise it will plot along the bottom and
- * overlay labels there if any. This can be dealt with via
- * the 'set parea' command. In version 2 the default parea will
- * be changed, but we want to guarantee upward compatibility in
- * sub-releases.
- *
- function colorbar (args)
- *
- * Check shading information
- *
- 'query shades'
- shdinfo = result
- if (subwrd(shdinfo,1)='None')
- say 'Cannot plot color bar: No shading information'
- return
- endif
- *
- * Get plot size info
- *
- 'query gxinfo'
- rec2 = sublin(result,2)
- rec3 = sublin(result,3)
- rec4 = sublin(result,4)
- xsiz = subwrd(rec2,4)
- ysiz = subwrd(rec2,6)
- ylo = subwrd(rec4,4)
- xhi = subwrd(rec3,6)
- xd = xsiz - xhi
- *
- * Decide if horizontal or vertical color bar
- * and set up constants.
- *
- if (ylo<0.6 & xd<1.0)
- say "Not enough room in plot for a colorbar"
- return
- endif
- cnum = subwrd(shdinfo,5)
- if (ylo<0.6 | xd>1.5)
- xl = xhi + xd/2 - 0.4
- xr = xl + 0.2
- xwid = 0.2
- ywid = 0.5
- if (ywid*cnum > ysiz*0.8)
- ywid = ysiz*0.8/cnum
- endif
- ymid = ysiz/2
- yb = ymid - ywid*cnum/2
- 'set string 1 l 5'
- vert = 1
- else
- ymid = ylo/2
- yt = ymid + 0.2
- yb = ymid
- xmid = xsiz/2
- xwid = 0.8
- if (xwid*cnum > xsiz*0.8)
- xwid = xsiz*0.8/cnum
- endif
- xl = xmid - xwid*cnum/2
- 'set string 1 tc 5'
- vert = 0
- endif
- *
- * Plot colorbar
- *
- 'set strsiz 0.12 0.13'
- num = 0
- while (num<cnum)
- rec = sublin(shdinfo,num+2)
- col = subwrd(rec,1)
- hi = subwrd(rec,3)
- 'set line 'col
- if (vert)
- yt = yb + ywid
- else
- xr = xl + xwid
- endif
- 'draw recf 'xl' 'yb' 'xr' 'yt
- if (num<cnum-1)
- if (vert)
- 'draw string '%(xr+0.05)%' 'yt' 'hi
- else
- 'draw string 'xr' '%(yb-0.05)%' 'hi
- endif
- endif
- num = num + 1
- if (vert); yb = yt;
- else; xl = xr; endif;
- endwhile
-